CC=gcc
CFLAGS=-c -Wall -g

project: list.o hash_table.o array.o memory.o common.o
	gcc list.o hash_table.o array.o common.o -o project

common.o: common.c common.h
	$(CC) $(CFLAGS) common.c

list.o: tools/list.c tools/list.h
	$(CC) $(CFLAGS) tools/list.c

hash_table.o: tools/hash_table.c tools/hash_table.h
	$(CC) $(CFLAGS) tools/hash_table.c

array.o: tools/array.c tools/array.h
	$(CC) $(CFLAGS) tools/array.c 

memory.o: tools/memory.c tools/memory.h
	$(CC) $(CFLAGS) tools/memory.c

.PHONY: test
test: test_array test_list test_hash_table

test_array: array.o memory.o common.o tests/test_array.c
	$(CC) -g tests/test_array.c array.o memory.o common.o -o test_array
	
test_list: list.o memory.o common.o tests/test_list.c
	$(CC) -g tests/test_list.c list.o memory.o common.o -o test_list
	
test_hash_table: hash_table.o memory.o common.o list.o tests/test_hash_table.c
	$(CC) -g tests/test_hash_table.c hash_table.o list.o memory.o common.o -o test_hash_table

.PHONY: clean
clean:
	find -name "*.o" -exec rm -rf {} +
	rm -f test_*
	rm -f project

